package com.codes.core.utils.tree;

import com.google.common.collect.Lists;
import org.apache.commons.collections4.MapUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
 * @Date 2020/6/2 14:46
 * @Created by peanut
 */
public class TreeUtil {




    /***
     * @param menuList  所有菜单list
     * @param pid   一般菜单pid  为0    参数就为 0  也可获取某个id下的子节点
     * @Description 构件菜单树
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     * @Date 2020/6/2 15:12
     * @Created by peanut
     */
    public static List<Map<String, Object>> buildMenuTree(List<Map<String, Object>> menuList, Integer pid) {
        List<Map<String, Object>> treeList = new ArrayList<>();
        menuList.forEach(menu -> {

            // pid
            if (Objects.equals(pid, MapUtils.getInteger(menu,"pid"))) {
                // spread
                menu.put("spread",true);
                menu.put("children" ,buildMenuTree(menuList,MapUtils.getInteger(menu,"id")));
               // menu.setChildMenus(buildMenuTree(menuList, menu.getId()));
                treeList.add(menu);
            }
        });
        return treeList;
    }



//
//
//
//    public static List<Map<String, Object>> getTree(  List<Map<String, Object>>  list){
//        List<Map<String, Object>> finalList = Lists.newArrayList();
//        List<Map<String, Object>> allList =  list;      //fileTypeDAO.getFileTypeTree();
//        for(Map<String, Object> m : allList){
//            int parentId = MapUtils.getInteger(m,"pid");// Integer.parseInt(m.get("parentId").toString());
//            if(parentId == 0){
//                int id = MapUtils.getInteger(m,"id");  // Integer.parseInt(m.get("id").toString());
//                m.put("id", id);
//                m.put("title", m.get("title").toString()); // 数页 名称
//                m.put("pid", parentId);
//                m.put("href", m.get("href").toString()); // value
//                List tempList = resCompanyTreeChildren(allList, id);
//                if(!tempList.isEmpty()){
//                    m.put("children", tempList);
//                }
//                finalList.add(m);
//            }
//        }
//        return finalList;
//    }
//
//
//
//    public static    List<Object> resCompanyTreeChildren(List<Map<String, Object>> allList, int pid) {
//        List<Object> list = Lists.newArrayList();
//        for(Map<String, Object> m : allList){
//            int parentId = Integer.parseInt(m.get("pid").toString());
//            if(parentId == pid){
//                int id = Integer.parseInt(m.get("id").toString());
//                m.put("id", id);
//                m.put("title", m.get("title").toString());
//                m.put("pid", parentId);
//                m.put("href", m.get("href").toString());
//                List tempList = resCompanyTreeChildren(allList, id);
//                if(!tempList.isEmpty()){
//                    m.put("children", tempList);
//                }
//                list.add(m);
//            }
//        }
//        return list;
//    }


    //
}